home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / pascal / tpa22.zip / USAGE.PAS < prev   
Pascal/Delphi Source File  |  1989-04-22  |  10KB  |  399 lines

  1. {═════════════════════════════ USAGE.PAS ═════════════════════════════}
  2. {  Non-Executable file with sample assembly language instructions     }
  3. {═════════════════════════════ USAGE.PAS ═════════════════════════════}
  4.  
  5. (*══════════════════════════════ NOTES ═══════════════════════════════*
  6.  
  7.  This file contains one or more examples of each 8086 instruction
  8.  mnemonic with a variety of combinations of operand types.  It is not
  9.  intended as a replacement for a tutorial or reference on assembly
  10.  language programming, however in some cases a couple of examples
  11.  of typical instruction syntax is all that you may need.  Please see
  12.  the  various .PAS files (on the registration disk or in the archive
  13.  TP-ASM.ZIP) for examples of assembly language in the context of
  14.  working programs.
  15.  
  16.  
  17.  The following symbols, used in the example instructions, can
  18.  represent a variety of Pascal and/or Assembly symbols as indicated
  19.  in the discussion which follows:
  20.  
  21.    Immediate_Byte   Immediate_Word
  22.    MemoryVar_Byte   MemoryVar_Word   MemoryVarDWord   MemoryVariable
  23.    MemoryReg_Byte   MemoryReg_Word
  24.    CodeLabelSHORT   CodeLabel_NEAR
  25.  
  26.  
  27.  Immediate_Byte can be:
  28.   a standard Pascal Constant, an Assembly EQU Constant, or a numeric
  29.   value or expression in the range -128 to 255
  30.  
  31.  Immediate_Word can be:
  32.   a standard Pascal Constant, an Assembly EQU Constant, or a numeric
  33.   value or expression in the range -32768 to 65535
  34.  
  35.  MemoryVar_Byte can be:
  36.   a Pascal BOOLEAN, BYTE, CHAR, or SHORTINT Variable or Typed Constant
  37.   or an Assembly BYTE Variable defined via DB or EQU B [..]
  38.  
  39.  MemoryReg_Byte can be:
  40.   a MemoryVar_Byte or a Byte register (Al, Ah, Bl, Bh, Cl, Ch, Dl, Dh)
  41.  
  42.  MemoryVar_Word can be:
  43.   a Pascal INTEGER or WORD Variable or Typed Constant
  44.   or an Assembly WORD Variable defined via DW or EQU W [..]
  45.  
  46.  MemoryReg_Word can be:
  47.   a MemoryVar_Word or a Word register (Ax, Bx, Cx, Dx, Si, Di, Bp, Sp)
  48.  
  49.  MemoryVarDWord can be:
  50.   a Pascal LONGINT or POINTER (^INTEGER, ^BYTE, etc) Variable or Typed
  51.   Constant, a Proc/Function VAR or UNTYPED Parameter,
  52.   or an Assembly DWORD Variable defined via DD or EQU D [..]
  53.  
  54.  MemoryVariable can be:
  55.   a MemoryVar_Byte, MemoryVar_Word, or MemoryVarDWord,
  56.   or a Pascal Variable of any other Type (e.g. STRING)
  57.  
  58.  CodeLabelSHORT must be:
  59.   an Assembly Code Label within 127 bytes (forward) or 128 bytes (back)
  60.   from the beginning of the next instruction
  61.  
  62.  CodeLabel_NEAR must be:
  63.   an Assembly Code Label within the current Assemble/Internal statement
  64.  
  65.  Dh is used as a typical Byte register.  It can be replaced by any of
  66.   the following Byte registers:  Al, Ah, Bl, Bh, Cl, Ch, Dl, or Dh
  67.  
  68.  Si is used as a typical Word register.  It can be replaced by any of
  69.   the following Word registers:  Ax, Bx, Cx, Dx, Si, Di, Bp, or Sp
  70.  
  71.  
  72.  The following list contains separate examples for instructions using
  73.  the Accumulator (AL or AX) in cases where the Accumulator version uses
  74.  a different opcode.  Instructions using the Accumulator are often one
  75.  byte shorter than instructions using another register.
  76.  
  77. *══════════════════════════════ NOTES ═══════════════════════════════*)
  78.  
  79.  
  80.  
  81.  
  82. {- Type Definitions For Version 3 -}
  83. TYPE
  84.   WORD    =  INTEGER;
  85.   POINTER = ^INTEGER;
  86.  
  87. {- Standard constants -}
  88. CONST
  89.   Immediate_Byte = 5;
  90.   Immediate_Word = $0213;
  91.  
  92. {- Typed Constants -}
  93. CONST
  94.   MemoryVar_Byte: BOOLEAN = TRUE;
  95.   MemoryReg_Byte: CHAR = 'A';
  96.  
  97. {- Global Variables -}
  98. VAR
  99.   MemoryVar_Word: WORD;
  100.   MemoryReg_Word: INTEGER;
  101.  
  102.  
  103. PROCEDURE OptestProc;
  104.  
  105. {- Local Variables -}
  106. VAR
  107.   MemoryVarDWord: POINTER;
  108.   MemoryVariable: STRING[34];
  109.  
  110. BEGIN
  111. Assemble
  112.  
  113.  AAA
  114.  AAD
  115.  AAM
  116.  AAS
  117.  ADC AL,Immediate_Byte
  118.  ADC AX,Immediate_Word
  119.  ADC MemoryReg_Byte,Immediate_Byte
  120.  ADC MemoryReg_Byte,Dh
  121.  ADC MemoryReg_Word,Immediate_Byte
  122.  ADC MemoryReg_Word,Immediate_Word
  123.  ADC MemoryReg_Word,Si
  124.  ADC Dh,MemoryReg_Byte
  125.  ADC Si,MemoryReg_Word
  126.  ADD AL,Immediate_Byte
  127.  ADD AX,Immediate_Word
  128.  ADD MemoryReg_Byte,Immediate_Byte
  129.  ADD MemoryReg_Byte,Dh
  130.  ADD MemoryReg_Word,Immediate_Byte
  131.  ADD MemoryReg_Word,Immediate_Word
  132.  ADD MemoryReg_Word,Si
  133.  ADD Dh,MemoryReg_Byte
  134.  ADD Si,MemoryReg_Word
  135.  AND AL,Immediate_Byte
  136.  AND AX,Immediate_Word
  137.  AND MemoryReg_Byte,Immediate_Byte
  138.  AND MemoryReg_Byte,Dh
  139.  AND MemoryReg_Word,Immediate_Word
  140.  AND MemoryReg_Word,Si
  141.  AND Dh,MemoryReg_Byte
  142.  AND Si,MemoryReg_Word
  143.  CALL 0040:0222
  144.  CALL CodeLabel_NEAR
  145.  CALL MemoryVarDWord
  146.  CALL MemoryReg_Word
  147.  CBW
  148.  CLC
  149.  CLD
  150.  CLI
  151.  CMC
  152.  CMP AL,Immediate_Byte
  153.  CMP AX,Immediate_Word
  154.  CMP MemoryReg_Byte,Immediate_Byte
  155.  CMP MemoryReg_Byte,Dh
  156.  CMP MemoryReg_Word,Immediate_Byte
  157.  CMP MemoryReg_Word,Immediate_Word
  158.  CMP MemoryReg_Word,Si
  159.  CMP Dh,MemoryReg_Byte
  160.  CMP Si,MemoryReg_Word
  161.  CMPSB
  162.  CMPSW
  163.  CWD
  164.  DAA
  165.  DAS
  166.  DEC MemoryReg_Byte
  167.  DEC MemoryReg_Word
  168.  DEC Si
  169.  DIV MemoryReg_Byte
  170.  DIV MemoryReg_Word
  171.  HLT
  172.  IDIV MemoryReg_Byte
  173.  IDIV MemoryReg_Word
  174.  IMUL MemoryReg_Byte
  175.  IMUL MemoryReg_Word
  176.  IN AL,DX
  177.  IN AL,Immediate_Byte
  178.  IN AX,DX
  179.  IN AX,Immediate_Byte
  180.  INC MemoryReg_Byte
  181.  INC MemoryReg_Word
  182.  INC Si
  183.  INT 3
  184.  INT Immediate_Byte
  185.  INTO
  186.  IRET
  187.  JA CodeLabelSHORT
  188.  JAE CodeLabelSHORT
  189.  JB CodeLabelSHORT
  190.  JBE CodeLabelSHORT
  191.  JC CodeLabelSHORT
  192.  JCXZ CodeLabelSHORT
  193.  JE CodeLabelSHORT
  194.  JG CodeLabelSHORT
  195.  JGE CodeLabelSHORT
  196.  JL CodeLabelSHORT
  197.  JLE CodeLabelSHORT
  198.  JMP CodeLabelSHORT
  199.  JMP 0040:0222
  200.  JMP CodeLabel_NEAR
  201.  JMP MemoryReg_Word
  202.  JMP MemoryVarDWord
  203.  JNA CodeLabelSHORT
  204.  JNAE CodeLabelSHORT
  205.  JNB CodeLabelSHORT
  206.  JNBE CodeLabelSHORT
  207.  JNC CodeLabelSHORT
  208.  JNE CodeLabelSHORT
  209.  JNG CodeLabelSHORT
  210.  JNGE CodeLabelSHORT
  211.  JNL CodeLabelSHORT
  212.  JNLE CodeLabelSHORT
  213.  JNO CodeLabelSHORT
  214.  JNP CodeLabelSHORT
  215.  JNS CodeLabelSHORT
  216.  JNZ CodeLabelSHORT
  217.  JO CodeLabelSHORT
  218.  JP CodeLabelSHORT
  219.  JPE CodeLabelSHORT
  220.  JPO CodeLabelSHORT
  221.  JS CodeLabelSHORT
  222.  JZ CodeLabelSHORT
  223. CodeLabelSHORT:
  224.  LAHF
  225.  LDS Si,MemoryVarDWord
  226.  LEA Si,MemoryVariable
  227.  LES Si,MemoryVarDWord
  228.  LOCK Mov Ax,[Si+2]
  229.  LODSB
  230.  LODSW
  231.  LOOP CodeLabelSHORT
  232.  LOOPE CodeLabelSHORT
  233.  LOOPNE CodeLabelSHORT
  234.  LOOPNZ CodeLabelSHORT
  235.  LOOPZ CodeLabelSHORT
  236.  MOV AL,MemoryVar_Byte
  237.  MOV AX,MemoryVar_Word
  238.  MOV DS,MemoryVar_Word
  239.  MOV DS,Si
  240.  MOV MemoryReg_Byte,Immediate_Byte
  241.  MOV MemoryReg_Byte,Dh
  242.  MOV ES,MemoryVar_Word
  243.  MOV ES,Si
  244.  MOV MemoryVar_Word,CS
  245.  MOV Si,CS
  246.  MOV MemoryVar_Word,DS
  247.  MOV Si,DS
  248.  MOV MemoryVar_Word,ES
  249.  MOV Si,ES
  250.  MOV MemoryReg_Word,Immediate_Word
  251.  MOV MemoryReg_Word,Si
  252.  MOV MemoryVar_Word,SS
  253.  MOV Si,SS
  254.  MOV Dh,MemoryReg_Byte
  255.  MOV Dh,Immediate_Byte
  256.  MOV Si,MemoryReg_Word
  257.  MOV Si,Immediate_Word
  258.  MOV SS,MemoryVar_Word
  259.  MOV SS,Si
  260.  MOV MemoryVar_Byte,AL
  261.  MOV MemoryVar_Word,AX
  262.  MOVSB
  263.  MOVSW
  264.  MUL MemoryReg_Byte
  265.  MUL MemoryReg_Word
  266.  NEG MemoryReg_Byte
  267.  NEG MemoryReg_Word
  268.  NOP
  269.  NOT MemoryReg_Byte
  270.  NOT MemoryReg_Word
  271.  OR AL,Immediate_Byte
  272.  OR AX,Immediate_Word
  273.  OR MemoryReg_Byte,Immediate_Byte
  274.  OR MemoryReg_Byte,Dh
  275.  OR MemoryReg_Word,Immediate_Word
  276.  OR MemoryReg_Word,Si
  277.  OR Dh,MemoryReg_Byte
  278.  OR Si,MemoryReg_Word
  279.  OUT DX,AL
  280.  OUT DX,AX
  281.  OUT Immediate_Byte,AL
  282.  OUT Immediate_Byte,AX
  283.  POP DS
  284.  POP ES
  285.  POP MemoryVar_Word
  286.  POP Si
  287.  POP SS
  288.  POPF
  289.  PUSH CS
  290.  PUSH DS
  291.  PUSH ES
  292.  PUSH MemoryVar_Word
  293.  PUSH Si
  294.  PUSH SS
  295.  PUSHF
  296.  RCL MemoryReg_Byte,1
  297.  RCL MemoryReg_Byte,CL
  298.  RCL MemoryReg_Word,1
  299.  RCL MemoryReg_Word,CL
  300.  RCR MemoryReg_Byte,1
  301.  RCR MemoryReg_Byte,CL
  302.  RCR MemoryReg_Word,1
  303.  RCR MemoryReg_Word,CL
  304.  REP MovSB
  305.  REPE CmpSB
  306.  REPNE CmpSB
  307.  REPNZ ScaSB
  308.  REPZ ScaSB
  309.  RET
  310.  RET Immediate_Word
  311.  RETF
  312.  RETF Immediate_Word
  313.  ROL MemoryReg_Byte,1
  314.  ROL MemoryReg_Byte,CL
  315.  ROL MemoryReg_Word,1
  316.  ROL MemoryReg_Word,CL
  317.  ROR MemoryReg_Byte,1
  318.  ROR MemoryReg_Byte,CL
  319.  ROR MemoryReg_Word,1
  320.  ROR MemoryReg_Word,CL
  321.  SAHF
  322.  SAL MemoryReg_Byte,1  ;Same as SHL
  323.  SAL MemoryReg_Byte,CL ;Same as SHL
  324.  SAL MemoryReg_Word,1  ;Same as SHL
  325.  SAL MemoryReg_Word,CL ;Same as SHL
  326.  SAR MemoryReg_Byte,1
  327.  SAR MemoryReg_Byte,CL
  328.  SAR MemoryReg_Word,1
  329.  SAR MemoryReg_Word,CL
  330.  SBB AL,Immediate_Byte
  331.  SBB AX,Immediate_Word
  332.  SBB MemoryReg_Byte,Immediate_Byte
  333.  SBB MemoryReg_Byte,Dh
  334.  SBB MemoryReg_Word,Immediate_By